package cn.tedu.net.collection.collection2;

import java.util.*;

//本类用于测试Map接口
public class Test4_Map {
    public static void main(String[] args) {
        //创建Map对象
        //map中的数据要符合映射规则,一定要同时指定K(键)和V(值)的类型

        Map<Integer,String> map=new HashMap<>();
        map.put(10086,"移动客服");
        map.put(10010,"联通客服");
        map.put(10000,"电信客服");
        map.put(10000,"客服电信");
        /*map中存放的都是无序的数据,map中的k不可以重复.如果重复k对应的值会被覆盖*/
        System.out.println(map);
        //测试常用方法
//        map.clear();//清空集合
        System.out.println(map.containsKey(10086));//判断有无K对应的键
        System.out.println(map.containsValue("外星客服"));//判断有无V对应的值
        System.out.println(map.get(10086));//根据键获取对应的值
        System.out.println(map.remove(10000));//返回被删除对应的值
        Collection<String> v=map.values();
        System.out.println(v);

        /*对map集合进行迭代
        *方式一:
        * 想要遍历map,需要先把map集合转换成set集合
        * Set<K> keyset():把map集合中的所有K存到Set集合中
        *  */
        System.out.println(map);
        Set<Integer> keyset= map.keySet();
        Iterator<Integer> it=keyset.iterator();
        while (it.hasNext()){
            Integer i=it.next();
            String  s=map.get(i);
            System.out.println("{"+i+"="+s+"}");
        }
        /*方式二:
        * 想要遍历map,需要先把map集合转换成set集合
        * Set<Entry<Integer,String>>entrySet
        * 把map集合中的一组k&v整体放入set集合的一个Entry中
        * 一组键值对就是一个Entry
        * */
        //把map转换成EntrySet
        Set<Map.Entry<Integer,String>>  entrySet=map.entrySet();
        Iterator<Map.Entry<Integer,String>> it2=entrySet.iterator();
        while (it2.hasNext()){
            Map.Entry<Integer,String> entry=it2.next();
            Integer key=entry.getKey();
            String  value=entry.getValue();
            System.out.println("{"+key+"="+value+"}");
        }
    }
}
